Skill

অ্যাপাচি স্টর্ম (Apache Storm)

556

অ্যাপাচি স্টর্ম  হলো একটি ওপেন-সোর্স, রিয়েল-টাইম ডেটা প্রসেসিং ফ্রেমওয়ার্ক, যা বড় আকারের স্ট্রিমিং ডেটা সেটে দ্রুত এবং ডিস্ট্রিবিউটেড ডেটা প্রসেসিং করতে সক্ষম। এটি বিশেষত রিয়েল-টাইম অ্যানালিটিক্স, মেশিন লার্নিং, এবং অন্যান্য এমন অ্যাপ্লিকেশনগুলোর জন্য ব্যবহৃত হয়, যেখানে ডেটার একটি অবিচ্ছিন্ন স্ট্রিম আসে এবং সেই ডেটা দ্রুত প্রসেস করা প্রয়োজন।


Apache Storm: একটি বিস্তারিত বাংলা টিউটোরিয়াল

ভূমিকা

Apache Storm হল একটি ওপেন-সোর্স ডিস্ট্রিবিউটেড রিয়েল-টাইম কম্পিউটেশন সিস্টেম, যা বড় আকারের স্ট্রিম ডেটা প্রসেস করার জন্য ব্যবহৃত হয়। এটি বিজলির গতিতে ডেটা প্রোসেস করতে সক্ষম এবং এটি fault-tolerant, স্কেলেবল, এবং আকস্মিক ত্রুটির সময় ডেটা পুনরুদ্ধার করতে সক্ষম। Apache Storm এর সাহায্যে আপনি ডেটা প্রসেসিং, ডাটা স্ট্রিমিং, এবং অনলাইন অ্যানালিটিক্স করতে পারেন। এটি মূলত real-time analytics, distributed computation, এবং machine learning এর মতো কাজে ব্যবহৃত হয়।

Apache Storm, Apache Kafka এবং অন্যান্য ডেটা স্ট্রিমিং সিস্টেমের সাথে ইন্টিগ্রেট করতে পারে এবং খুবই দ্রুত ও কার্যকরীভাবে বড় ডেটাসেট প্রোসেস করতে সক্ষম। এটি সেকেন্ডে লাখ লাখ মেসেজ প্রোসেস করতে পারে এবং বড় ডিস্ট্রিবিউটেড সিস্টেমের জন্য আদর্শ।

Apache Storm এর বৈশিষ্ট্যসমূহ

  1. Real-Time Processing: Apache Storm মূলত স্ট্রিম ডেটা রিয়েল-টাইমে প্রোসেস করতে ব্যবহৃত হয়।
  2. Scalability: Storm অত্যন্ত স্কেলেবল এবং বড় আকারের ডেটা হ্যান্ডল করার জন্য একাধিক নোডে কাজ করতে পারে।
  3. Fault-Tolerance: Storm এর fault-tolerance ফিচার নিশ্চিত করে যে, সিস্টেমের কোনো অংশ ব্যর্থ হলেও প্রসেসিং চলতে থাকে।
  4. Distributed Processing: Storm একটি সম্পূর্ণ ডিস্ট্রিবিউটেড সিস্টেম হিসেবে কাজ করে এবং একাধিক মেশিনের উপর কাজ করতে সক্ষম।
  5. Language Agnostic: Storm এর topology তৈরির জন্য আপনি যে কোনো প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন, যেমন Java, Python, Ruby, ইত্যাদি।
  6. Guaranteed Processing: Storm নিশ্চিত করে যে প্রতিটি ডেটা টাস্ক একবারই প্রোসেস হয় এবং ডেটা লস না হয়।
  7. Low Latency: Storm এর লেটেন্সি খুবই কম, যা দ্রুত ডেটা প্রসেসিং নিশ্চিত করে।
  8. Integration with Other Tools: Apache Storm সহজেই Kafka, Hadoop, HBase, এবং Cassandra এর মতো অন্যান্য টুলের সাথে ইন্টিগ্রেট করা যায়।

Apache Storm এর প্রধান উপাদানসমূহ

Apache Storm এর কাজকে বোঝার জন্য এর মূল উপাদানগুলো সম্পর্কে পরিষ্কার ধারণা থাকা প্রয়োজন। নিচে Apache Storm এর প্রধান উপাদানগুলো নিয়ে আলোচনা করা হলো:

১. Spout (স্পাউট)

Spout হল ডেটার মূল উৎস, যা বিভিন্ন ডেটা স্ট্রিমের ইনপুট সরবরাহ করে। এটি মূলত ডেটা পড়ে এবং সেটিকে Storm এর বিভিন্ন প্রসেসিং ইউনিটে প্রেরণ করে। Spout বিভিন্ন ডেটা সোর্স থেকে ডেটা গ্রহণ করতে পারে, যেমন Apache Kafka, Twitter API, File Systems, বা অন্যান্য ডেটাবেস।

২. Bolt (বোল্ট)

Bolt হল Storm এর প্রসেসিং ইউনিট, যা Spout থেকে প্রাপ্ত ডেটা প্রসেস করে। Bolt এর মাধ্যমে আপনি ডেটা ফিল্টার করা, ট্রান্সফর্ম করা, এবং রিয়েল-টাইম অ্যানালিটিক্স করতে পারেন। একটি Storm topology-তে একাধিক Bolt থাকতে পারে এবং প্রতিটি Bolt ডেটার ওপর বিভিন্ন ধরনের প্রসেসিং করতে পারে।

৩. Topology (টপোলজি)

Topology হল Storm এর একটি গ্রাফ, যা Spout এবং Bolt-এর মধ্যে সম্পর্ক নির্দেশ করে। Topology হল ডেটা স্ট্রিমের কাজের ধারা, যা Apache Storm এ একবার Submit করার পর চলতে থাকে যতক্ষণ না আপনি সেটি বন্ধ করেন। Topology তে প্রতিটি স্পাউট এবং বোল্ট একটি নোড হিসেবে কাজ করে এবং ডেটা এই নোডগুলোর মাধ্যমে প্রবাহিত হয়।

৪. Stream (স্ট্রিম)

Stream হল একটি অবিরাম ডেটা ফ্লো, যা Spout থেকে Bolt এ পাঠানো হয়। প্রতিটি Stream-এ একাধিক tuple (ডেটার ছোট অংশ) থাকতে পারে, যা একটি প্রসেসিং টাস্কের মাধ্যমে প্রক্রিয়াকৃত হয়।

৫. Tuple (টাপল)

Tuple হল Storm এ একক ডেটা ইউনিট, যা মূলত একাধিক ফিল্ডের সমন্বয়ে গঠিত। Tuple এর মাধ্যমে ডেটা স্পাউট থেকে বোল্টে যায় এবং প্রসেসিংয়ের জন্য ব্যবহৃত হয়।

৬. Nimbus

Nimbus হল Apache Storm এর Master Node, যা Topology ম্যানেজ করে এবং সিস্টেমের কাজ সুষ্ঠুভাবে পরিচালনা করে। এটি Topology কে বিভিন্ন Worker Node-এ বিতরণ করে এবং পুরো ক্লাস্টার ম্যানেজ করে।

৭. Supervisor

Supervisor হল Storm এর Worker Node, যা Nimbus থেকে Topology গ্রহণ করে এবং তা চালায়। Supervisor প্রতিটি Bolt এবং Spout এর কাজ পরিচালনা করে।

Apache Storm ইনস্টলেশন এবং সেটআপ

Apache Storm ব্যবহার করতে হলে প্রথমে আপনার সিস্টেমে Apache Zookeeper এবং Apache Storm ইনস্টল করতে হবে। নিচে Storm ইনস্টলেশনের ধাপগুলো নিয়ে আলোচনা করা হলো।

ধাপ ১: Java ইনস্টল করা

Storm চালানোর জন্য আপনার সিস্টেমে Java ইনস্টল থাকতে হবে। যদি Java ইনস্টল না থাকে, তাহলে নিচের কমান্ড ব্যবহার করে Java ইনস্টল করুন:

sudo apt update sudo apt install default-jdk

ইনস্টলেশনের পর Java এর সংস্করণ চেক করতে নিচের কমান্ডটি ব্যবহার করুন:

java -version

ধাপ ২: ZooKeeper ইনস্টল করা

Apache Storm এর জন্য ZooKeeper প্রয়োজন, কারণ এটি ক্লাস্টারের কাজ পরিচালনা করে। ZooKeeper ইনস্টল করার জন্য নিচের ধাপগুলো অনুসরণ করুন:

sudo apt install zookeeperd

ইনস্টলেশনের পরে, ZooKeeper সার্ভার চালু করতে নিচের কমান্ডটি ব্যবহার করুন:

sudo systemctl start zookeeper

ধাপ ৩: Apache Storm ডাউনলোড করা

Apache Storm এর অফিসিয়াল সাইট থেকে Storm ডাউনলোড করুন অথবা নিচের কমান্ড ব্যবহার করুন:

wget https://downloads.apache.org/storm/apache-storm-

ডাউনলোড করার পর Storm আনজিপ করুন:

tar -xvzf apache-storm-

ধাপ ৪: Storm সার্ভার চালানো

Storm সার্ভার চালানোর জন্য, প্রথমে Nimbus এবং Supervisor চালাতে হবে। নিম্নলিখিত কমান্ডগুলো ব্যবহার করুন:

Nimbus চালানো:

bin/storm nimbus

Supervisor চালানো:

bin/storm supervisor

এখন আপনার Storm সার্ভার চালু হয়েছে এবং আপনি Topology সাবমিট করতে প্রস্তুত।

Apache Storm এর একটি সাধারণ উদাহরণ

Storm এ একটি সাধারণ Topology তৈরি করতে আপনি Spout এবং Bolt ব্যবহার করে ডেটা প্রসেস করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে ডেটা ইনপুট নেওয়া হচ্ছে এবং সেটিকে প্রসেস করা হচ্ছে।

১. Spout তৈরি করা

Spout ডেটার উৎস থেকে ডেটা সংগ্রহ করে। নিচে একটি সাধারণ Spout কোড দেওয়া হলো:

import org.apache.storm.spout.SpoutOutputCollector;
import org.apache.storm.task.TopologyContext;
import org.apache.storm.topology.OutputFieldsDeclarer;
import org.apache.storm.topology.base.BaseRichSpout;
import org.apache.storm.tuple.Values;

public class RandomSpout extends BaseRichSpout {
    private SpoutOutputCollector collector;

    @Override
    public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
        this.collector = collector;
    }

    @Override
    public void nextTuple() {
        String[] words = {"Storm", "Apache", "Real-Time", "Big Data"};
        String word = words[new Random().nextInt(words.length)];
        collector.emit(new Values(word));
    }

    @Override
    public void declareOutputFields(OutputFieldsDeclarer declarer) {
        declarer.declare(new Fields("word"));
    }
}

২. Bolt তৈরি করা

Bolt ডেটা প্রসেস করে। নিচে একটি সাধারণ Bolt কোড দেওয়া হলো, যেখানে ডেটা প্রিন্ট করা হচ্ছে:

import org.apache.storm.topology.OutputFieldsDeclarer;
import org.apache.storm.topology.base.BaseRichBolt;
import org.apache.storm.tuple.Tuple;

public class PrintBolt extends BaseRichBolt {
    @Override
    public void execute(Tuple tuple) {
        String word = tuple.getStringByField("word");
        System.out.println("Received: " + word);
    }

    @Override
    public void declareOutputFields(OutputFieldsDeclarer declarer) {
        // No output fields
    }
}

৩. Topology তৈরি করা

Spout এবং Bolt কে একটি Topology তে সংযুক্ত করা হয়। নিচে একটি Topology উদাহরণ দেওয়া হলো:

import org.apache.storm.Config;
import org.apache.storm.LocalCluster;
import org.apache.storm.topology.TopologyBuilder;

public class StormTopology {
    public static void main(String[] args) {
        // TopologyBuilder ব্যবহার করে Spout এবং Bolt কে সংযুক্ত করা
        TopologyBuilder builder = new TopologyBuilder();
        builder.setSpout("random-spout", new RandomSpout());
        builder.setBolt("print-bolt", new PrintBolt()).shuffleGrouping("random-spout");

        // Config সেট করা
        Config config = new Config();
        config.setDebug(true);

        // LocalCluster এ topology চালানো
        LocalCluster cluster = new LocalCluster();
        cluster.submitTopology("test-topology", config, builder.createTopology());
    }
}

এই Topology তে RandomSpout একটি র্যান্ডম শব্দ গ্রহণ করে এবং PrintBolt সেটিকে প্রিন্ট করে।

Apache Storm এর কিছু অ্যাডভান্সড ফিচার

১. Acking Mechanism

Apache Storm এ Acknowledgment (Acking) মেকানিজম রয়েছে, যা নিশ্চিত করে যে প্রতিটি মেসেজ সঠিকভাবে প্রসেস হয়েছে। যদি কোনো মেসেজ প্রসেসিং ব্যর্থ হয়, তাহলে এটি পুনরায় প্রসেস করা হয়।

২. Trident API

Trident API Storm এর একটি উচ্চ-স্তরের API, যা ব্যাচ প্রসেসিং এবং স্টেটফুল কম্পিউটেশন সমর্থন করে। এটি ডেটার ওপর filtering, aggregation, এবং joins করার সুযোগ দেয়।

৩. Stream Grouping

Storm এ বিভিন্ন ধরনের stream grouping রয়েছে, যা নির্ধারণ করে কিভাবে ডেটা এক Bolt থেকে অন্য Bolt এ যাবে। উদাহরণস্বরূপ, shuffle grouping এবং fields grouping

৪. Fault Tolerance

Storm এর fault tolerance ফিচার নিশ্চিত করে যে কোনো নোড ব্যর্থ হলে প্রসেসিং চলমান থাকবে এবং ডেটা লস হবে না।

Apache Storm এর সুবিধা

  1. Real-Time Processing: Apache Storm দ্রুতগতির এবং বড় আকারের ডেটা রিয়েল-টাইমে প্রসেস করতে সক্ষম।
  2. Scalability: Storm অত্যন্ত স্কেলেবল এবং সহজেই বড় ক্লাস্টারে কাজ করতে পারে।
  3. Fault Tolerance: Storm এর fault tolerance ফিচার এটিকে নির্ভরযোগ্য করে তোলে।
  4. Language Agnostic: Storm যে কোনো প্রোগ্রামিং ভাষায় টপোলজি তৈরি করার সুযোগ দেয়।

Apache Storm এর অসুবিধা

  1. কনফিগারেশন জটিলতা: Storm এর কনফিগারেশন কিছুটা জটিল হতে পারে, বিশেষ করে বড় আকারের ডিস্ট্রিবিউটেড ক্লাস্টারে।
  2. Latency Issues: কিছু ক্ষেত্রে উচ্চ লোডের সময় Storm এর লেটেন্সি বেড়ে যেতে পারে।
  3. Debugging Complexity: বড় টপোলজির ক্ষেত্রে ডিবাগ করা কঠিন হতে পারে।

Apache Storm বনাম Apache Kafka

বৈশিষ্ট্যApache StormApache Kafka
ডেটা মডেলDistributed Real-Time ProcessingDistributed Streaming Platform
LatencyLow LatencyMedium Latency
Use CaseReal-Time Analytics, Stream ProcessingEvent Streaming, Log Aggregation
Fault Toleranceসমর্থিতসমর্থিত

উপসংহার

Apache Storm হল একটি শক্তিশালী এবং স্কেলেবল রিয়েল-টাইম স্ট্রিম প্রসেসিং টুল, যা বড় আকারের ডেটা সিস্টেমে দ্রুত এবং নির্ভরযোগ্য প্রসেসিং সক্ষম করে। এটি ডেটা স্ট্রিম প্রসেসিং, অনলাইন অ্যানালিটিক্স এবং বড় ডিস্ট্রিবিউটেড সিস্টেমের জন্য অত্যন্ত কার্যকর। Apache Kafka এবং অন্যান্য ডেটা সোর্সের সাথে সহজেই ইন্টিগ্রেট করা যায়, যা এটিকে বড় ডেটা প্রোজেক্টের জন্য আদর্শ করে তোলে।

অ্যাপাচি স্টর্ম  হলো একটি ওপেন-সোর্স, রিয়েল-টাইম ডেটা প্রসেসিং ফ্রেমওয়ার্ক, যা বড় আকারের স্ট্রিমিং ডেটা সেটে দ্রুত এবং ডিস্ট্রিবিউটেড ডেটা প্রসেসিং করতে সক্ষম। এটি বিশেষত রিয়েল-টাইম অ্যানালিটিক্স, মেশিন লার্নিং, এবং অন্যান্য এমন অ্যাপ্লিকেশনগুলোর জন্য ব্যবহৃত হয়, যেখানে ডেটার একটি অবিচ্ছিন্ন স্ট্রিম আসে এবং সেই ডেটা দ্রুত প্রসেস করা প্রয়োজন।


Apache Storm: একটি বিস্তারিত বাংলা টিউটোরিয়াল

ভূমিকা

Apache Storm হল একটি ওপেন-সোর্স ডিস্ট্রিবিউটেড রিয়েল-টাইম কম্পিউটেশন সিস্টেম, যা বড় আকারের স্ট্রিম ডেটা প্রসেস করার জন্য ব্যবহৃত হয়। এটি বিজলির গতিতে ডেটা প্রোসেস করতে সক্ষম এবং এটি fault-tolerant, স্কেলেবল, এবং আকস্মিক ত্রুটির সময় ডেটা পুনরুদ্ধার করতে সক্ষম। Apache Storm এর সাহায্যে আপনি ডেটা প্রসেসিং, ডাটা স্ট্রিমিং, এবং অনলাইন অ্যানালিটিক্স করতে পারেন। এটি মূলত real-time analytics, distributed computation, এবং machine learning এর মতো কাজে ব্যবহৃত হয়।

Apache Storm, Apache Kafka এবং অন্যান্য ডেটা স্ট্রিমিং সিস্টেমের সাথে ইন্টিগ্রেট করতে পারে এবং খুবই দ্রুত ও কার্যকরীভাবে বড় ডেটাসেট প্রোসেস করতে সক্ষম। এটি সেকেন্ডে লাখ লাখ মেসেজ প্রোসেস করতে পারে এবং বড় ডিস্ট্রিবিউটেড সিস্টেমের জন্য আদর্শ।

Apache Storm এর বৈশিষ্ট্যসমূহ

  1. Real-Time Processing: Apache Storm মূলত স্ট্রিম ডেটা রিয়েল-টাইমে প্রোসেস করতে ব্যবহৃত হয়।
  2. Scalability: Storm অত্যন্ত স্কেলেবল এবং বড় আকারের ডেটা হ্যান্ডল করার জন্য একাধিক নোডে কাজ করতে পারে।
  3. Fault-Tolerance: Storm এর fault-tolerance ফিচার নিশ্চিত করে যে, সিস্টেমের কোনো অংশ ব্যর্থ হলেও প্রসেসিং চলতে থাকে।
  4. Distributed Processing: Storm একটি সম্পূর্ণ ডিস্ট্রিবিউটেড সিস্টেম হিসেবে কাজ করে এবং একাধিক মেশিনের উপর কাজ করতে সক্ষম।
  5. Language Agnostic: Storm এর topology তৈরির জন্য আপনি যে কোনো প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন, যেমন Java, Python, Ruby, ইত্যাদি।
  6. Guaranteed Processing: Storm নিশ্চিত করে যে প্রতিটি ডেটা টাস্ক একবারই প্রোসেস হয় এবং ডেটা লস না হয়।
  7. Low Latency: Storm এর লেটেন্সি খুবই কম, যা দ্রুত ডেটা প্রসেসিং নিশ্চিত করে।
  8. Integration with Other Tools: Apache Storm সহজেই Kafka, Hadoop, HBase, এবং Cassandra এর মতো অন্যান্য টুলের সাথে ইন্টিগ্রেট করা যায়।

Apache Storm এর প্রধান উপাদানসমূহ

Apache Storm এর কাজকে বোঝার জন্য এর মূল উপাদানগুলো সম্পর্কে পরিষ্কার ধারণা থাকা প্রয়োজন। নিচে Apache Storm এর প্রধান উপাদানগুলো নিয়ে আলোচনা করা হলো:

১. Spout (স্পাউট)

Spout হল ডেটার মূল উৎস, যা বিভিন্ন ডেটা স্ট্রিমের ইনপুট সরবরাহ করে। এটি মূলত ডেটা পড়ে এবং সেটিকে Storm এর বিভিন্ন প্রসেসিং ইউনিটে প্রেরণ করে। Spout বিভিন্ন ডেটা সোর্স থেকে ডেটা গ্রহণ করতে পারে, যেমন Apache Kafka, Twitter API, File Systems, বা অন্যান্য ডেটাবেস।

২. Bolt (বোল্ট)

Bolt হল Storm এর প্রসেসিং ইউনিট, যা Spout থেকে প্রাপ্ত ডেটা প্রসেস করে। Bolt এর মাধ্যমে আপনি ডেটা ফিল্টার করা, ট্রান্সফর্ম করা, এবং রিয়েল-টাইম অ্যানালিটিক্স করতে পারেন। একটি Storm topology-তে একাধিক Bolt থাকতে পারে এবং প্রতিটি Bolt ডেটার ওপর বিভিন্ন ধরনের প্রসেসিং করতে পারে।

৩. Topology (টপোলজি)

Topology হল Storm এর একটি গ্রাফ, যা Spout এবং Bolt-এর মধ্যে সম্পর্ক নির্দেশ করে। Topology হল ডেটা স্ট্রিমের কাজের ধারা, যা Apache Storm এ একবার Submit করার পর চলতে থাকে যতক্ষণ না আপনি সেটি বন্ধ করেন। Topology তে প্রতিটি স্পাউট এবং বোল্ট একটি নোড হিসেবে কাজ করে এবং ডেটা এই নোডগুলোর মাধ্যমে প্রবাহিত হয়।

৪. Stream (স্ট্রিম)

Stream হল একটি অবিরাম ডেটা ফ্লো, যা Spout থেকে Bolt এ পাঠানো হয়। প্রতিটি Stream-এ একাধিক tuple (ডেটার ছোট অংশ) থাকতে পারে, যা একটি প্রসেসিং টাস্কের মাধ্যমে প্রক্রিয়াকৃত হয়।

৫. Tuple (টাপল)

Tuple হল Storm এ একক ডেটা ইউনিট, যা মূলত একাধিক ফিল্ডের সমন্বয়ে গঠিত। Tuple এর মাধ্যমে ডেটা স্পাউট থেকে বোল্টে যায় এবং প্রসেসিংয়ের জন্য ব্যবহৃত হয়।

৬. Nimbus

Nimbus হল Apache Storm এর Master Node, যা Topology ম্যানেজ করে এবং সিস্টেমের কাজ সুষ্ঠুভাবে পরিচালনা করে। এটি Topology কে বিভিন্ন Worker Node-এ বিতরণ করে এবং পুরো ক্লাস্টার ম্যানেজ করে।

৭. Supervisor

Supervisor হল Storm এর Worker Node, যা Nimbus থেকে Topology গ্রহণ করে এবং তা চালায়। Supervisor প্রতিটি Bolt এবং Spout এর কাজ পরিচালনা করে।

Apache Storm ইনস্টলেশন এবং সেটআপ

Apache Storm ব্যবহার করতে হলে প্রথমে আপনার সিস্টেমে Apache Zookeeper এবং Apache Storm ইনস্টল করতে হবে। নিচে Storm ইনস্টলেশনের ধাপগুলো নিয়ে আলোচনা করা হলো।

ধাপ ১: Java ইনস্টল করা

Storm চালানোর জন্য আপনার সিস্টেমে Java ইনস্টল থাকতে হবে। যদি Java ইনস্টল না থাকে, তাহলে নিচের কমান্ড ব্যবহার করে Java ইনস্টল করুন:

sudo apt update sudo apt install default-jdk

ইনস্টলেশনের পর Java এর সংস্করণ চেক করতে নিচের কমান্ডটি ব্যবহার করুন:

java -version

ধাপ ২: ZooKeeper ইনস্টল করা

Apache Storm এর জন্য ZooKeeper প্রয়োজন, কারণ এটি ক্লাস্টারের কাজ পরিচালনা করে। ZooKeeper ইনস্টল করার জন্য নিচের ধাপগুলো অনুসরণ করুন:

sudo apt install zookeeperd

ইনস্টলেশনের পরে, ZooKeeper সার্ভার চালু করতে নিচের কমান্ডটি ব্যবহার করুন:

sudo systemctl start zookeeper

ধাপ ৩: Apache Storm ডাউনলোড করা

Apache Storm এর অফিসিয়াল সাইট থেকে Storm ডাউনলোড করুন অথবা নিচের কমান্ড ব্যবহার করুন:

wget https://downloads.apache.org/storm/apache-storm-

ডাউনলোড করার পর Storm আনজিপ করুন:

tar -xvzf apache-storm-

ধাপ ৪: Storm সার্ভার চালানো

Storm সার্ভার চালানোর জন্য, প্রথমে Nimbus এবং Supervisor চালাতে হবে। নিম্নলিখিত কমান্ডগুলো ব্যবহার করুন:

Nimbus চালানো:

bin/storm nimbus

Supervisor চালানো:

bin/storm supervisor

এখন আপনার Storm সার্ভার চালু হয়েছে এবং আপনি Topology সাবমিট করতে প্রস্তুত।

Apache Storm এর একটি সাধারণ উদাহরণ

Storm এ একটি সাধারণ Topology তৈরি করতে আপনি Spout এবং Bolt ব্যবহার করে ডেটা প্রসেস করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে ডেটা ইনপুট নেওয়া হচ্ছে এবং সেটিকে প্রসেস করা হচ্ছে।

১. Spout তৈরি করা

Spout ডেটার উৎস থেকে ডেটা সংগ্রহ করে। নিচে একটি সাধারণ Spout কোড দেওয়া হলো:

import org.apache.storm.spout.SpoutOutputCollector;
import org.apache.storm.task.TopologyContext;
import org.apache.storm.topology.OutputFieldsDeclarer;
import org.apache.storm.topology.base.BaseRichSpout;
import org.apache.storm.tuple.Values;

public class RandomSpout extends BaseRichSpout {
    private SpoutOutputCollector collector;

    @Override
    public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
        this.collector = collector;
    }

    @Override
    public void nextTuple() {
        String[] words = {"Storm", "Apache", "Real-Time", "Big Data"};
        String word = words[new Random().nextInt(words.length)];
        collector.emit(new Values(word));
    }

    @Override
    public void declareOutputFields(OutputFieldsDeclarer declarer) {
        declarer.declare(new Fields("word"));
    }
}

২. Bolt তৈরি করা

Bolt ডেটা প্রসেস করে। নিচে একটি সাধারণ Bolt কোড দেওয়া হলো, যেখানে ডেটা প্রিন্ট করা হচ্ছে:

import org.apache.storm.topology.OutputFieldsDeclarer;
import org.apache.storm.topology.base.BaseRichBolt;
import org.apache.storm.tuple.Tuple;

public class PrintBolt extends BaseRichBolt {
    @Override
    public void execute(Tuple tuple) {
        String word = tuple.getStringByField("word");
        System.out.println("Received: " + word);
    }

    @Override
    public void declareOutputFields(OutputFieldsDeclarer declarer) {
        // No output fields
    }
}

৩. Topology তৈরি করা

Spout এবং Bolt কে একটি Topology তে সংযুক্ত করা হয়। নিচে একটি Topology উদাহরণ দেওয়া হলো:

import org.apache.storm.Config;
import org.apache.storm.LocalCluster;
import org.apache.storm.topology.TopologyBuilder;

public class StormTopology {
    public static void main(String[] args) {
        // TopologyBuilder ব্যবহার করে Spout এবং Bolt কে সংযুক্ত করা
        TopologyBuilder builder = new TopologyBuilder();
        builder.setSpout("random-spout", new RandomSpout());
        builder.setBolt("print-bolt", new PrintBolt()).shuffleGrouping("random-spout");

        // Config সেট করা
        Config config = new Config();
        config.setDebug(true);

        // LocalCluster এ topology চালানো
        LocalCluster cluster = new LocalCluster();
        cluster.submitTopology("test-topology", config, builder.createTopology());
    }
}

এই Topology তে RandomSpout একটি র্যান্ডম শব্দ গ্রহণ করে এবং PrintBolt সেটিকে প্রিন্ট করে।

Apache Storm এর কিছু অ্যাডভান্সড ফিচার

১. Acking Mechanism

Apache Storm এ Acknowledgment (Acking) মেকানিজম রয়েছে, যা নিশ্চিত করে যে প্রতিটি মেসেজ সঠিকভাবে প্রসেস হয়েছে। যদি কোনো মেসেজ প্রসেসিং ব্যর্থ হয়, তাহলে এটি পুনরায় প্রসেস করা হয়।

২. Trident API

Trident API Storm এর একটি উচ্চ-স্তরের API, যা ব্যাচ প্রসেসিং এবং স্টেটফুল কম্পিউটেশন সমর্থন করে। এটি ডেটার ওপর filtering, aggregation, এবং joins করার সুযোগ দেয়।

৩. Stream Grouping

Storm এ বিভিন্ন ধরনের stream grouping রয়েছে, যা নির্ধারণ করে কিভাবে ডেটা এক Bolt থেকে অন্য Bolt এ যাবে। উদাহরণস্বরূপ, shuffle grouping এবং fields grouping

৪. Fault Tolerance

Storm এর fault tolerance ফিচার নিশ্চিত করে যে কোনো নোড ব্যর্থ হলে প্রসেসিং চলমান থাকবে এবং ডেটা লস হবে না।

Apache Storm এর সুবিধা

  1. Real-Time Processing: Apache Storm দ্রুতগতির এবং বড় আকারের ডেটা রিয়েল-টাইমে প্রসেস করতে সক্ষম।
  2. Scalability: Storm অত্যন্ত স্কেলেবল এবং সহজেই বড় ক্লাস্টারে কাজ করতে পারে।
  3. Fault Tolerance: Storm এর fault tolerance ফিচার এটিকে নির্ভরযোগ্য করে তোলে।
  4. Language Agnostic: Storm যে কোনো প্রোগ্রামিং ভাষায় টপোলজি তৈরি করার সুযোগ দেয়।

Apache Storm এর অসুবিধা

  1. কনফিগারেশন জটিলতা: Storm এর কনফিগারেশন কিছুটা জটিল হতে পারে, বিশেষ করে বড় আকারের ডিস্ট্রিবিউটেড ক্লাস্টারে।
  2. Latency Issues: কিছু ক্ষেত্রে উচ্চ লোডের সময় Storm এর লেটেন্সি বেড়ে যেতে পারে।
  3. Debugging Complexity: বড় টপোলজির ক্ষেত্রে ডিবাগ করা কঠিন হতে পারে।

Apache Storm বনাম Apache Kafka

বৈশিষ্ট্যApache StormApache Kafka
ডেটা মডেলDistributed Real-Time ProcessingDistributed Streaming Platform
LatencyLow LatencyMedium Latency
Use CaseReal-Time Analytics, Stream ProcessingEvent Streaming, Log Aggregation
Fault Toleranceসমর্থিতসমর্থিত

উপসংহার

Apache Storm হল একটি শক্তিশালী এবং স্কেলেবল রিয়েল-টাইম স্ট্রিম প্রসেসিং টুল, যা বড় আকারের ডেটা সিস্টেমে দ্রুত এবং নির্ভরযোগ্য প্রসেসিং সক্ষম করে। এটি ডেটা স্ট্রিম প্রসেসিং, অনলাইন অ্যানালিটিক্স এবং বড় ডিস্ট্রিবিউটেড সিস্টেমের জন্য অত্যন্ত কার্যকর। Apache Kafka এবং অন্যান্য ডেটা সোর্সের সাথে সহজেই ইন্টিগ্রেট করা যায়, যা এটিকে বড় ডেটা প্রোজেক্টের জন্য আদর্শ করে তোলে।

Promotion

Are you sure to start over?

Loading...